﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;

namespace WebApplication1
{
    public class Startup
    {

        #region  这些代码在build 时候运行
        //类的构造方法注入  设置当前的configurat 值
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        //添加服务到容器  运行时调用 
        //IServiceCollection  作用-->指定服务描述符集合的约定 ,继承IList<ServiceDescriptor>接口。
        //IServiceCollection 上有 Add{Service} 扩展方法
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
        }
        #endregion



        #region 这些代码在Run 时候运行

        //配置HTTP 请求管道  运行时调用
        //可通过将中间件组件添加到 IApplicationBuilder 实例来配置请求管道。
        //IApplicationBuilder 
        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
        {
            //IsDevelopment 检查当前的主机环境名字是否是Microsoft.AspNetCore.Hosting.EnvironmentName的开发环境
            //如果是返回为True;
            if (env.IsDevelopment())
            {
                //UseDeveloperExceptionPage()   是一个扩展方法
                //--> 作用：捕获同步或异步系统异常管道中的实例 ，并生成HTML 错误响应
                app.UseDeveloperExceptionPage();
            }
            else
            {
                //UseHsts();  是一个扩展方法
                //--> 作用:添加用于使用HSTS的中间件，这将添加严格的传输安全头。
                app.UseHsts();
            }

            //UseHttpsRedirection(); 添加用于将HTTP请求重定向到HTTPS的中间件。(扩展方法)
            app.UseHttpsRedirection();

            //UseMvc()  将MVC 添加到Microsoft.AspNetCore.Builder.IApplicationBuilder 请求执行管道。
            app.UseMvc();
        }

        #endregion 
    }
}
